1. Field of the Invention
The present invention relates to a graphical user interface, and deals more particularly with a method and apparatus for quickly and efficiently selecting or deselecting a spatially-related group of objects using a single selection or deselection operation, while preserving the ability to select or deselect individual items within a group. A new set of graphical control objects is defined, any of which will graphically indicate the members of the group with which it is associated.
2. Description of the Related Art
Computer users have become accustomed to using computer software applications which present information through a graphical user interface. A number of types of information presentation have become de facto standards, such as radio buttons, checkboxes, slider bars, and pushbuttons. These items are referred to as graphical user interface objects, or graphical objects. Users typically interact with software applications having a graphical user interface by moving a pointing cursor over a graphical object using, for example, a mouse or similar pointing device such as a light pen, and then indicating (for example, by clicking a mouse button or pressing the light pen) that the object should be selected. Alternatively, some graphical user interfaces may be presented on a touch-sensitive display screen. In that situation, the user interacts with the software application by touching the graphical object he wishes to select.
The programmer writing a software application having a graphical user interface defines the physical layout of the graphical objects on the user interface screen, as well as the functioning of the objects and any logical relationships among those objects. The function represented by a graphical object can be as simple as setting the value of a variable used by the software application, or it can represent a more complex function such as initiating the execution of a software subroutine, or any other function desired by the programmer.
When radio buttons and checkboxes are displayed on the screen, they are normally accompanied by text, which explains the function of the individual object. Each of these objects has a status associated with it, which is either "selected" or "not selected". The face of the radio button or checkbox represents graphically to the user what the current status for that object's function is. For example, a radio button is represented as a round graphical object. When the radio button is selected by the user, it is typically shown having a black circle that is smaller than the radio button, and located inside the larger button. When the radio button is deselected, it is shown as just the round object without the black circle inside. A checkbox is represented by a square graphical object that resembles an empty box. When the checkbox is selected by the user, a check mark (or perhaps an "x") is shown in the square box, as if a person had written a check mark into a box with a pencil. When the checkbox is deselected, the check mark does not appear, so that the checkbox appears as the empty square. While selection and deselection have been described here as a status set in response to a user interaction, it will be obvious to one skilled in the art that the default selection status of each object, as defined by the software application, will be represented in the same graphical manner.
By convention, rules are associated with the selection of radio buttons and checkboxes. Radio buttons have the characteristic of mutual exclusion. That is, of all the radio buttons in a logically-defined group, only one can be selected at a time: if one radio button is already selected when the user selects a different radio button from the group, then the originally-selected button is automatically deselected. Checkboxes, on the other hand, are not mutually exclusive. They function as multiple-choice selectors within a logically-defined group, so that any number of the checkboxes in the group can be selected at one time.
"Pushbutton" is a term used for a graphical object that may or may not be shaped like a round button: it may be shaped like a rectangle, square, etc. The function typically associated with a pushbutton object is to cause some action to occur, or to select a particular response from among choices presented. As an example of the first scenario, a pushbutton may be displayed as a rectangle with the word "Go" on its face. When the user clicks on this pushbutton, some predefined action is executed. The particular action may be obvious to the user, or may be explained with text accompanying the pushbutton. As an example of using a pushbutton to select a response, pushbuttons may be used in an error situation, where an error message is displayed to the user along with two pushbuttons having the text "Retry" and "Cancel" on their faces. The user then decides whether he wants to retry the function encountering the error, or to cancel the function entirely. He indicates his choice from the alternatives by clicking on the pushbutton with the corresponding text.
A slider bar is a type of graphical user interface object which is often associated with a function that has values within a range or scale, where the corresponding values can be graphically represented as having a logical sequential order. To use a slider bar, the user drags an object representing a slider (or pointing object), which is positioned on the bar. Dragging the slider causes a different value to be selected from the range. Alternatively, the user may click directly on a portion of the bar, to select a specific value. As an example, a slider bar might be used on the user interface of a multi-media computer application having sound. The user would select the desired sound volume by moving the slider from a low value to a high value, or somewhere in between. When a specific value, such as a number, corresponds to a position in the range, the application will typically display the number that has been selected. By moving the slider, and having the number change at the same time, the slider bar gives the appearance of representing a scale.
A limited amount of space is available on the display screen for presenting graphical objects and any corresponding text that may be required in order to explain the function of each object. The more choices that are available in a particular software application, the greater will be the number of graphical objects needed to represent those choices.
Programmers tend to physically group graphical objects that have some relationship, and often will define logical groups of objects as well. For example, radio buttons are defined as forming a logical group, in order to implement the mutual exclusion property for the group. The checkboxes belonging to a group will normally be located together on the display, according to their logical grouping. These logical groups of objects may be further divided into subgroups, which are groups within groups. (The concepts of the present invention apply equally to logically-defined groups and to their logically-defined subgroups. Thus, the term "group" should be construed as including subgroups hereinafter unless otherwise indicated.)
In spite of these physical and logical groupings of objects, there is currently no mechanism for quickly and efficiently selecting (or deselecting) all the graphical objects of a group with a single operation, while preserving the ability to select (or deselect) individual items within the group. Each object must be accessed, one at a time, to change its selection status. This can be very time-consuming, as well as tedious, for a user of the software application. It would be much more convenient for the user to be able to indicate, for example with a single click of a mouse button, that he would like to select or deselect an entire group of objects.
Existing software applications may present a type of group-controlling mechanism through use of a separate button or object designated, for example, "select all". However, this type of object, with its corresponding textual explanation, occupies extra screen space on the display, and does not visibly indicate its associated group members using a spatial relationship. Further, a "select all" function is typically associated with a different type of user interface control, where a single pushbutton is provided to select all items in a multi-entry list, and where the function and the corresponding pushbutton are not associated with any logical subgroup of those items. What is needed is a solution that does not require extra text to explain the functioning of the control object, but which visibly indicates which objects it controls by the relative positioning of the control object and the group member objects, and which allows selection (or deselection) of a logical group of graphical objects with a single operation. The user should be able to select or deselect individual graphical objects as well, to allow maximum flexibility in object selection.
The present invention would be useful in any situation where the user is presented with a group or list of multiple-choice items from which to make selections, such as in on-line shopping software applications. In an on-line shopping application, the shopper may be presented with a list of items available for purchasing, and be directed to select objects associated with each item that he wishes to order electronically. The items may be logically grouped as packages, such as an options package when ordering an automobile. Today, the on-line shopper has to click on each individual option in the package to order all the options of the package.
Another scenario where selecting or deselecting items as a group would be useful is any type of calendaring or scheduling software where repetitive scheduling of events or actions is possible. The user of this type of application, in order to schedule an event of some sort, might be presented with a list of the days of the week, or days of the month, or even hours of the day. Logical groupings where days are involved might be weekdays as one group, and weekends as another group, depending on the particular software application in use. Logical groupings of hours might be the a.m. hours as one group, and the p.m. hours as another group; or, for example, a factory-scheduling application might group the hours of the day into first shift, second shift, and third shift. The particular logical groups will have been defined by the programmer creating the software application, as discussed earlier. A user of this type of application would find it much more convenient to be able to select all weekdays, or all first shift hours, with a single mouse click rather than individually clicking on an object corresponding to each weekday or each of eight hours.
Accordingly, a need exists for a technique by which a user of a software application having a graphical user interface can quickly and efficiently select or deselect all the members of a logically-defined group of graphical user interface objects, while still preserving the ability to select or deselect individual items within the group. Further, a need exists for a new type of graphical object that will control the selection status of a group of other graphical objects, and which indicates, by its position and appearance, the graphical objects belonging to the group. The proposed technique provides a number of new graphical control objects, which the programmer can position on the display in a spatial relationship to members of a group of other graphical objects. The programmer defines the group members associated with this control object, and defines the function of the control object as controlling the selection status of the member objects. Optionally, the existing slider bar graphical object can be used instead of a new control object, where the technique of controlling the selection status of associated objects is defined for the slider bar in a novel manner. The present invention supports subgrouping, whereby a group within another group can be defined, and whereby a graphical control object is associated with each level of logical group so that the user can select or deselect members at the level of granularity most convenient. Because the graphical control objects indicate their function by their position and spatial relationship to the group members, there is no need to include text for the control object: thus, the control object occupies a minimal amount of display space.